package com.w.usercenter.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 通用配置
 *
 * @author ruoyi
 */
@Configuration
public class ResourcesConfig implements WebMvcConfigurer {


//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        //设置允许跨域的路径
//        registry.addMapping("/**")
//                // 允许跨域请求的域名
//                //当Credentials为true时，addAllowedOrigin必须是具体的地址,不能用*【如果接口不带cookie,ip无需设成具体ip】
//                .allowedOrigins("http://localhost:8888", "http://127.0.0.1:8888")
////                .allowedOriginPatterns()
//                // 允许证书(允许使用cookie) 不再默认开启
//                .allowCredentials(true)
//                // 允许的请求头
//                .allowedHeaders("*")
//                // 允许的请求方式,get,put,post,delete,OPTIONS
//                .allowedMethods("*")
//                // 跨域允许时间
//                .maxAge(3600);
//    }


    /**
     * 跨域配置
     */
    @Bean
    public CorsFilter corsFilter() {

        CorsConfiguration config = new CorsConfiguration();
        // 允许证书(允许使用cookie) 不再默认开启
        config.setAllowCredentials(true);
        // 允许跨域请求的域名
        //当Credentials为true时，addAllowedOrigin必须是具体的地址,不能用*【如果接口不带cookie,ip无需设成具体ip】
        config.addAllowedOriginPattern("http://localhost:8888");
        config.addAllowedOriginPattern("http://127.0.0.1:8888");
        // 允许的请求头
        config.addAllowedHeader("*");
        // 允许的请求方式,get,put,post,delete,OPTIONS
        config.addAllowedMethod("*");
        // 有效期 1800秒
        config.setMaxAge(1800L);
        // 添加映射路径，拦截一切请求
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        // 返回新的CorsFilter
        return new CorsFilter(source);
    }
}